import axios from 'axios'
import { showNotify } from 'vant'
import { getToken,removeToken } from './token'
import router from '@/router'


const request = axios.create({
    /**
       * 服务器地址 所有接口 前缀
       */
    baseURL: 'http://124.220.178.79:8199',
    /**
   * 超时
   */
    timeout: 15000,
})

//添加 请求拦截
request.interceptors.request.use((config) => {
    // 登录后 给所有接口 添加 用于鉴权的header头
    config.headers.Authorization=`Bearer ${getToken()}`
    return config
}, error => Promise.reject(error)
)

// 添加响应拦截器
request.interceptors.response.use(
    res => {
        // console.log(res);
        // code  是我们和后端约定的业务状态码
        if (res.data.code === 1) {
            // 从 响应数据中 直接拿到 后端返回值返回
            // 返回成功结果
            return res.data
        } else {
            // 表示 调用失败
            if (res.data.code === 0) {
                showNotify({ type: 'danger', message: res.data.message || '请求异常' });
                // 如果接口 提示 请登录 表示token过期 或者没有token 返回登录页面
                if(res.data.message==='请登录'){
                    // 先清除掉本地token
                    removeToken()
                    // 再 返回登录页面
                    router.replace('/login')
                }
            }
            if (res.data.code === 3) {
                showNotify({ type: 'danger', message: "登录信息有误，请确认后再登录" });
            }
            // 调用失败  就返回失败结果
            return Promise.reject("调用失败")
        }
    },
    error => Promise.reject(error)
);

export default request;
